/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Model;

import Entity.JenisInstansi;
import Entity.KerjaSama;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import library.Koneksi;

/**
 *
 * @author user
 */
public class DaftarKerjaSama {
    
    KerjaSama kerjaSama;
    
    //method untuk menambah kerja sama
    public boolean tambahKerjaSama(KerjaSama kerjaSama){
        boolean hasil = false;
        this.kerjaSama = kerjaSama;
        Koneksi dbConn = new Koneksi();
        String sql = "insert into kegiatan_kerjasama(ID_JENIS_INSTANSI, NAMA_INSTANSI, NAMA_KEGIATAN, TAHUN_MULAI, TAHUN_SELESAI, MANFAAT_KERJASAMA, KETERANGAN_KERJASAMA, NO_SK_KERJASAMA) "
                + "value("+this.kerjaSama.getJenisInstansi().getIdJenisInstansi()+
                ",'"+this.kerjaSama.getNamaInstansi()+
                "','"+this.kerjaSama.getNamaKegiatan()+
                "','"+this.kerjaSama.getTahunMulai()+
                "','"+this.kerjaSama.getTahunSelesai()+
                "','"+this.kerjaSama.getManfaatKerjaSama()+
                "','"+this.kerjaSama.getKeteranganKerjaSama()+
                "','"+this.kerjaSama.getNoSkKerjaSama()+
                "')";
        System.out.println("sql : "+sql);
        PreparedStatement st;
        try {
            Connection conn = Koneksi.getKoneksi();
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if(rs > 0){
                hasil = true;
            } else{
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarKerjaSama.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println("error : "+ex.getErrorCode());
            System.out.println("error : "+ex.getMessage());
        } finally {
            dbConn.closeConnection();
        }
        return hasil;
    }
    
    //method untuk mengambil data daftar kerjasama
    public List<KerjaSama> ambilDaftarKerjasama(){
        List<KerjaSama> daftarKerjaSama = new ArrayList<KerjaSama>();
        Koneksi dbConn = new Koneksi();
        String sql = "SELECT * FROM kegiatan_kerjasama as A, jenis_instansi_kerjasama as B where A.ID_JENIS_INSTANSI = B.ID_JENIS_INSTANSI";
        PreparedStatement st;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            ResultSet rs = st.executeQuery();

            while(rs.next()){
                this.kerjaSama = new KerjaSama();
                JenisInstansi jenisInstansi = new JenisInstansi();
                jenisInstansi.setIdJenisInstansi(rs.getInt("ID_JENIS_INSTANSI"));
                jenisInstansi.setJenisInstansi(rs.getString("JENIS_INSTANSI"));
                kerjaSama.setIdKerjaSama(rs.getInt("ID_KERJASAMA"));
                kerjaSama.setJenisInstansi(jenisInstansi);
                kerjaSama.setNamaInstansi(rs.getString("NAMA_INSTANSI"));
                kerjaSama.setNamaKegiatan(rs.getString("NAMA_KEGIATAN"));
                kerjaSama.setTahunMulai(rs.getString("TAHUN_MULAI"));
                kerjaSama.setTahunSelesai(rs.getString("TAHUN_SELESAI"));
                kerjaSama.setManfaatKerjaSama(rs.getString("MANFAAT_KERJASAMA"));
                kerjaSama.setKeteranganKerjaSama(rs.getString("KETERANGAN_KERJASAMA"));
                kerjaSama.setNoSkKerjaSama(rs.getString("NO_SK_KERJASAMA"));
                daftarKerjaSama.add(kerjaSama);
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarKerjaSama.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            dbConn.closeConnection();
        }
        return daftarKerjaSama;
    }

    //method untuk menghapus data kerjasama
    public boolean hapusKerjaSama(KerjaSama kerjasama){

        boolean hasil = true;

        PreparedStatement st = null;
        Koneksi dbConn = new Koneksi();

        String sql = "DELETE FROM kegiatan_kerjasama WHERE ID_KERJASAMA = "+kerjasama.getIdKerjaSama();

        Connection conn = Koneksi.getKoneksi();
        try {
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if(rs > 0){
                hasil = true;
            } else{
                hasil = false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarKerjaSama.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            dbConn.closeConnection();
        }

        return hasil;

    }
    
    //method untuk mengambil data kerjasama dengan id tertentu
    public KerjaSama ambilDataKerjasama(String idKerjasama){

        Koneksi dbConn = new Koneksi();
        String sql = "SELECT * FROM kegiatan_kerjasama as A, jenis_instansi_kerjasama as B where A.ID_JENIS_INSTANSI = B.ID_JENIS_INSTANSI and A.ID_KERJASAMA="+idKerjasama;
        PreparedStatement st;
        try {

            Connection conn = Koneksi.getKoneksi();

            st = conn.prepareStatement(sql);
            ResultSet rs = st.executeQuery();

            while(rs.next()){
                this.kerjaSama = new KerjaSama();
                JenisInstansi jenisInstansi = new JenisInstansi();
                jenisInstansi.setIdJenisInstansi(rs.getInt("ID_JENIS_INSTANSI"));
                jenisInstansi.setJenisInstansi(rs.getString("JENIS_INSTANSI"));
                kerjaSama.setIdKerjaSama(rs.getInt("ID_KERJASAMA"));
                kerjaSama.setJenisInstansi(jenisInstansi);
                kerjaSama.setNamaInstansi(rs.getString("NAMA_INSTANSI"));
                kerjaSama.setNamaKegiatan(rs.getString("NAMA_KEGIATAN"));
                kerjaSama.setTahunMulai(rs.getString("TAHUN_MULAI"));
                kerjaSama.setTahunSelesai(rs.getString("TAHUN_SELESAI"));
                kerjaSama.setManfaatKerjaSama(rs.getString("MANFAAT_KERJASAMA"));
                kerjaSama.setKeteranganKerjaSama(rs.getString("KETERANGAN_KERJASAMA"));
                kerjaSama.setNoSkKerjaSama(rs.getString("NO_SK_KERJASAMA"));
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarKerjaSama.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            dbConn.closeConnection();
        }
        return kerjaSama;

    }
    
    //method untuk mengedit kerjasama
    public boolean editKerjaSama(KerjaSama kerjasama, KerjaSama kerjasamaLama){
        boolean hasil = false;
        this.kerjaSama = kerjasama;
        Koneksi dbConn = new Koneksi();

        String sql = "update kegiatan_kerjasama SET "
                + "ID_JENIS_INSTANSI = "+this.kerjaSama.getJenisInstansi().getIdJenisInstansi()+
                ", NAMA_INSTANSI = '"+this.kerjaSama.getNamaInstansi()+
                "', NAMA_KEGIATAN = '"+this.kerjaSama.getNamaKegiatan()+
                "', TAHUN_MULAI = '"+this.kerjaSama.getTahunMulai()+
                "', TAHUN_SELESAI = '"+this.kerjaSama.getTahunSelesai()+
                "', MANFAAT_KERJASAMA = '"+this.kerjaSama.getManfaatKerjaSama()+
                "', KETERANGAN_KERJASAMA = '"+this.kerjaSama.getKeteranganKerjaSama()+
                "', NO_SK_KERJASAMA = '"+this.kerjaSama.getNoSkKerjaSama()+
                "' where ID_KERJASAMA = "+kerjasamaLama.getIdKerjaSama();
        PreparedStatement st;

        try {
            Connection conn = Koneksi.getKoneksi();
            st = conn.prepareStatement(sql);
            int rs = st.executeUpdate(sql);
            if(rs > 0){
                hasil = true;
            } else{
                hasil = false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(DaftarKerjaSama.class.getName()).log(Level.SEVERE, null, ex);
        }

        return hasil;
    }
    
}
